Skip to content

Fix errors such as "org.jetbrains.dokka.model.DClass ScrollState cannot be merged with org.jetbrains.dokka.model.DObject ScrollState" in dokkaGeneratePublicationHtml#115

Merged
ShreckYe merged 5 commits into
github-pages-deployment-with-dokkafrom
copilot/sub-pr-43
Mar 22, 2026
Merged

Fix errors such as "org.jetbrains.dokka.model.DClass ScrollState cannot be merged with org.jetbrains.dokka.model.DObject ScrollState" in dokkaGeneratePublicationHtml#115
ShreckYe merged 5 commits into
github-pages-deployment-with-dokkafrom
copilot/sub-pr-43

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 21, 2026

Fixes ./gradlew dokkaGeneratePublicationHtml and updates the GitHub Pages deployment workflow to include Dokka-generated API documentation alongside the existing side-by-side demo.

Changes Made

Fix Dokka DClass/DObject merge error

  • ScrollState in jsMain: Changed actual object ScrollStateactual class ScrollState, updated rememberScrollState to return ScrollState() instead of the singleton
  • LazyItemScope in jsMain: Changed actual object LazyItemScopeactual class LazyItemScope, updated usages in LazyDsl.js.kt to instantiate LazyItemScope() instead of using the singleton

These fixes resolve org.jetbrains.dokka.model.DClass ScrollState cannot be merged with org.jetbrains.dokka.model.DObject ScrollState caused by expect class / actual object mismatches that Dokka cannot merge.

Update GitHub Pages deployment workflow (demo-gh-pages.yml)

  • Added dokkaGeneratePublicationHtml to the Gradle build step alongside sideBySideBrowserDistribution
  • Added a step to copy the Dokka HTML output (build/dokka/html/) into the deployed site under an api/ subdirectory
  • Updated workflow name to reflect it now deploys both the demo and API documentation

Fix copilot-setup-steps.yml

  • Changed macos-latest back to ubuntu-latest to match main

Resulting Site Structure

  • / → Side-by-side demo (JS DOM + Wasm JS Canvas)
  • /api/ → Dokka API documentation

Verification

  • ./gradlew :compose-multiplatform-html-unified-common:dokkaGeneratePublicationHtml passes
  • ./gradlew dokkaGeneratePublicationHtml passes for all modules
  • ./gradlew publishToMavenLocal passes with no compilation regressions

⚡ Quickly spin up Copilot coding agent tasks from anywhere on your macOS or Windows machine with Raycast.

Copilot AI requested a review from ShreckYe March 21, 2026 09:11
ShreckYe added a commit that referenced this pull request Mar 21, 2026
From a message in #115:

```
Copilot stopped work due to an error
The `runs-on` setting in your `copilot-setup-steps.yml` file points to a GitHub Actions runner with an unsupported operating system. Only Linux and Windows runners are supported. For more information, see https://gh.io/cca-runner-os.
```

From its GitHub Actions agent logs:

```
0s
Run if [[ "macOS" != "Linux" && "macOS" != "Windows" ]]; then
macOS is not currently supported. Only Linux and Windows are supported.
Error: Process completed with exit code 1.
```
@ShreckYe
Copy link
Copy Markdown
Member

@copilot I have updated it to use Ubuntu in main. Try again.

Change `actual object ScrollState` to `actual class ScrollState` in jsMain
to fix Dokka's inability to merge DClass and DObject models. Apply the
same fix to `LazyItemScope` which had the same expect class/actual object
mismatch. Reuse a single LazyItemScope instance since it's stateless.

Co-authored-by: ShreckYe <27768951+ShreckYe@users.noreply.github.com>
Agent-Logs-Url: https://github.com/huanshankeji/compose-multiplatform-html-unified/sessions/fb46b1bd-1f94-4165-b19a-6bc80235c64b
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Mar 21, 2026

@copilot I have updated it to use Ubuntu in main. Try again.

Fixed in 3c287b5. The dokkaGeneratePublicationHtml failure was caused by expect class / actual object mismatches that Dokka can't merge (DClass vs DObject). Changed actual object ScrollStateactual class ScrollState and actual object LazyItemScopeactual class LazyItemScope in jsMain. Both dokkaGeneratePublicationHtml (all modules) and publishToMavenLocal pass.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • docs.oracle.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.xml/javax.xml.namespace=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED -Xmx32G -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:&#43;HeapDumpOnOutOfMemoryError -XX:&#43;AlwaysPreTouch @/home/REDACTED/.gradle/.tmp/gradle-worker-classpath16922809976159254251txt -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain &#39;Gradle Worker Daemon 1&#39; grep -l ScrollState fied/compose-multiplatform-html-unified/common/src/jsMain/kotlin/com/huanshankeji/compose/founda-Xmx64m (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:&#43;HeapDumpOnOutOfMemoryError -XX:&#43;AlwaysPreTouch @/home/REDACTED/.gradle/.tmp/gradle-worker-classpath690634911098584426txt -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain &#39;Gradle Worker Daemon 2&#39; grep -l ScrollState latform-html-unified/compose-multiplatform-html-unified/common/src/jsMain/kotlin/com/huanshankej-Xmx64m rep (dns block)
  • https://developer.android.com/reference/kotlin/androidx/package-list
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:&#43;HeapDumpOnOutOfMemoryError -XX:&#43;AlwaysPreTouch @/home/REDACTED/.gradle/.tmp/gradle-worker-classpath690634911098584426txt -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain &#39;Gradle Worker Daemon 2&#39; grep -l ScrollState latform-html-unified/compose-multiplatform-html-unified/common/src/jsMain/kotlin/com/huanshankej-Xmx64m rep (http block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:&#43;HeapDumpOnOutOfMemoryError -XX:&#43;AlwaysPreTouch @/home/REDACTED/.gradle/.tmp/gradle-worker-classpath1323565845950316961txt -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain &#39;Gradle Worker Daemon 3&#39; grep ptio�� ScrollState latform-html-unified/compose-multiplatform-html-unified/common/src/jsMain/kotlin/com/huanshankej-Xmx64m grep (http block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:&#43;HeapDumpOnOutOfMemoryError -XX:&#43;AlwaysPreTouch @/home/REDACTED/.gradle/.tmp/gradle-worker-classpath15535292264005340729txt -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain &#39;Gradle Worker Daemon 4&#39; grep (http block)
  • https://developer.android.com/reference/kotlin/package-list
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:&#43;HeapDumpOnOutOfMemoryError -XX:&#43;AlwaysPreTouch @/home/REDACTED/.gradle/.tmp/gradle-worker-classpath690634911098584426txt -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain &#39;Gradle Worker Daemon 2&#39; grep -l ScrollState latform-html-unified/compose-multiplatform-html-unified/common/src/jsMain/kotlin/com/huanshankej-Xmx64m rep (http block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:&#43;HeapDumpOnOutOfMemoryError -XX:&#43;AlwaysPreTouch @/home/REDACTED/.gradle/.tmp/gradle-worker-classpath1323565845950316961txt -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain &#39;Gradle Worker Daemon 3&#39; grep ptio�� ScrollState latform-html-unified/compose-multiplatform-html-unified/common/src/jsMain/kotlin/com/huanshankej-Xmx64m grep (http block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:&#43;HeapDumpOnOutOfMemoryError -XX:&#43;AlwaysPreTouch @/home/REDACTED/.gradle/.tmp/gradle-worker-classpath15535292264005340729txt -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain &#39;Gradle Worker Daemon 4&#39; grep (http block)
  • https://kotlinlang.org/api/core/package-list
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:&#43;HeapDumpOnOutOfMemoryError -XX:&#43;AlwaysPreTouch @/home/REDACTED/.gradle/.tmp/gradle-worker-classpath690634911098584426txt -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain &#39;Gradle Worker Daemon 2&#39; grep -l ScrollState latform-html-unified/compose-multiplatform-html-unified/common/src/jsMain/kotlin/com/huanshankej-Xmx64m rep (http block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:&#43;HeapDumpOnOutOfMemoryError -XX:&#43;AlwaysPreTouch @/home/REDACTED/.gradle/.tmp/gradle-worker-classpath1323565845950316961txt -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain &#39;Gradle Worker Daemon 3&#39; grep ptio�� ScrollState latform-html-unified/compose-multiplatform-html-unified/common/src/jsMain/kotlin/com/huanshankej-Xmx64m grep (http block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:&#43;HeapDumpOnOutOfMemoryError -XX:&#43;AlwaysPreTouch @/home/REDACTED/.gradle/.tmp/gradle-worker-classpath15535292264005340729txt -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain &#39;Gradle Worker Daemon 4&#39; grep (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@ShreckYe
Copy link
Copy Markdown
Member

dokkaGeneratePublicationHtml works.

@ShreckYe
Copy link
Copy Markdown
Member

@copilot I have added the the blocked URLs to the firewall allowlist and made some improvements, continue to complete the PR and update thte tiltle correspondingly.

… alongside demo

- Update demo-gh-pages.yml to run dokkaGeneratePublicationHtml alongside
  sideBySideBrowserDistribution and copy the Dokka HTML output to the
  site under an `api/` subdirectory
- Update workflow name to reflect it deploys both demo and API docs
- Fix copilot-setup-steps.yml to use ubuntu-latest (matching main)

Co-authored-by: ShreckYe <27768951+ShreckYe@users.noreply.github.com>
Agent-Logs-Url: https://github.com/huanshankeji/compose-multiplatform-html-unified/sessions/fe6d1cc2-55ae-4670-a884-abf1758ec816
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Mar 21, 2026

@copilot I have added the the blocked URLs to the firewall allowlist and made some improvements, continue to complete the PR and update thte tiltle correspondingly.

Done in dba83da. Updated demo-gh-pages.yml to run dokkaGeneratePublicationHtml alongside the demo build and copy the Dokka HTML output to an api/ subdirectory of the deployed site. Also fixed copilot-setup-steps.yml to use ubuntu-latest to match main.

The deployed site will have:

  • / → side-by-side demo (JS DOM + Wasm)
  • /api/ → Dokka API documentation

Copilot AI changed the title [WIP] Add API documentation generated with Dokka to the site deployed to GitHub Pages Add API documentation generated with Dokka to the site deployed to GitHub Pages Mar 21, 2026
@sonarqubecloud
Copy link
Copy Markdown

@ShreckYe ShreckYe changed the title Add API documentation generated with Dokka to the site deployed to GitHub Pages Fix errors such as "org.jetbrains.dokka.model.DClass ScrollState cannot be merged with org.jetbrains.dokka.model.DObject ScrollState" in dokkaGeneratePublicationHtml Mar 22, 2026
@ShreckYe ShreckYe marked this pull request as ready for review March 22, 2026 11:15
@ShreckYe ShreckYe merged commit ee61d86 into github-pages-deployment-with-dokka Mar 22, 2026
2 checks passed
@ShreckYe ShreckYe deleted the copilot/sub-pr-43 branch March 22, 2026 11:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants